ELF (اجرایی و لینک کردن فرمت) با فرمت باینری در اصل توسط USL (آزمایشگاه سیستم یونیکس) توسعه یافته و در حال حاضر در سولاریس و سیستم V انتشار 4 استفاده می شود. به دلیل افزایش انعطاف پذیری خود را بر فرمت a.out که لینوکس استفاده می شود که قبلا، شورای همکاری خلیج فارس و C کتابخانه توسعه دهندگان تصمیم گرفت در سال گذشته به حرکت با استفاده از ELF به عنوان فرمت استاندارد باینری لینوکس نیز است.
آشکار این انعطاف پذیری افزایش یافته است 'به عنوان اساسا دو سود به progammer برنامه های کاربردی به طور متوسط:
-fPIC
، و سپس ارتباط با یک دستور مانند
شورای همکاری خلیج فارس مشترک-WL-soname، libfoo.so.y-O libfoo.so.yx * است.
در صورتی که به نظر می رسد پیچیده، بدیهی است که شما تا کنون نمی خواند تا در روش معادل برای کتابخانه a.out مشترک، که شامل جمع آوری کتابخانه دو بار، رزرو فضا برای تمام داده های شما فکر می کنم که کتابخانه به احتمال زیاد در آینده نیاز است، و ثبت نام که فضای آدرس با شخص ثالث (آن را در یک سند بیش از 20 طول صفحات --- نگاه در ftp://tsx-11.mit.edu/pub/linux/packages/GCC/src/tools-2.17.tar GZ برای جزئیات بیشتر). در برابر این موضوع، آن را باید به وزن که ELF است احتمالا کمی کندتر است. چهره های که به bandied اطراف بین 1٪ و 5٪ هستند، هر چند تمام آزمون واقعی است که تا کنون انجام شده است نشان می دهد که اختلاف به اندازه کافی کوچک است که در سر و صدا از وقایع دیگر اتفاق می افتد در همان زمان گم. اگر شما تک و یا یک بیننده / چاپگر پست اسکریپت، شما قادر به خواندن speed.comp-1.0.tar.gz
، که در دسترس است از SunSite جایی.
کاهش سرعت می آید از این واقعیت است که کد کتابخانه ELF باید جایگاه مستقل (این است آنچه را که -fPIC
بالا مخفف) و به همین ترتیب ثبت نام باید به برگزاری آفست اختصاص داده شده است. این یکی کمتر برای برگزاری متغیر در و 80x86 کمبود ثبات همه منظوره به هر حال می. توجه داشته باشید که تفاوت سرعت تنها به کد است که بخشی از کتابخانه های اشتراکی شامل است. برای برنامهها و یا دانه است، تفاوت سرعت بین a.out و ELF وجود دارد.
تعدادی از تصورات غلط رایج در مورد چه ELF برای سیستم شما انجام دهد وجود دارد:
هر چند که همان باینری `ظرف به عنوان SVR4 سیستم استفاده، این بدان معنا نیست که SVR4 برنامه ناگهان runnable بر روی لینوکس است. این شبیه به یک فرمت دیسک --- شما می توانید از برنامه های لینوکس را بر روی MSDOS یا مینیکس فرمت دیسک، و بالعکس، اما این بدان معنا نیست که این سیستم قادر به اجرای برنامه های یکدیگر می شوند.
ممکن است برای اجرای یک برنامه کاربردی برای دیگری یونیکس X86 تحت لینوکس (آن را در برنامه بستگی دارد)، اما پس از دستورالعمل های این HOWTO خواهد شد که اثر را ندارد. با نگاه کردن ماژول کرنل iBCS (جایی در tsx-11.mit.edu
) شروع کنید و ببینید که اگر آن را متناسب با نیازهای شما.
شما هم ممکن است با باینری کوچکتر پایان دادن به هر حال، هر چند، همانطور که شما به راحتی می توانید ایجاد کتابخانه های اشتراکی از کد مشترک بین بسیاری از برنامه های. به طور کلی، اگر شما با استفاده از گزینه های کامپایلر و فایل های باینری شما می آیند کوچکتر از آنها با a.out، آن را به احتمال زیاد به اتفاق و یا یک نسخه از کامپایلر های مختلف است. همانطور که برای `سریعتر، من شگفت زده می شود. افزایش سرعت می تواند به نوبه خود اگر باینری خود را کوچکتر، به دلیل کمتر مبادله و یا بزرگتر از زمینه های کاربردی اتصالات در کش.
در پایان از این روش شما باید یک سیستم قادر به کامپایل کردن و اجرای برنامه های ELF و a.out. برنامه های جدید به طور پیش فرض در ELF وارد شده، اما این می تواند با سوئیچ خط فرمان لغو است. مسلما مجازات حافظه برای اجرای سیستم مختلط ELF / a.out --- اگر شما هر دو نژاد از برنامه در حال اجرا در یک بار شما نیز دارای دو نسخه از کتابخانه C در هسته، و به همین ترتیب. من تا به حال گزارش می دهد که تفاوت سرعت از این در استفاده از نرمال در سیستم 6MB هر چند (من قطعا متوجه های زیادی را در 8MB)، پس از آن به سختی و با فشار دادن غیر قابل کشف است. شما از دست دادن حافظه به مراتب بیشتر هر روز با اجرای برنامه های پف کرده مانند ایمکس و استاتیک موزائیک / نت اسکیپ باینری :-)
یا حداقل در این زمینه است.
اساسا به دو دلیل به روز رسانی سیستم خود را کامپایل و اجرای برنامه های ELF وجود دارد: اول، افزایش انعطاف پذیری در برنامه گفته شده در بالا، و دوم این است که به دلیل اول، هر کس دیگری (یا در حال حاضر). نسخه های فعلی کتابخانه C و شورای همکاری خلیج فارس فقط برای ELF وارد شده، و توسعه دهندگان دیگر در حال حرکت ELFwards بیش از حد.
بسیاری از مردم در مورد ثبات (به نحو موجهی بنابراین، حتی اگر آن را بسیار سرگرم کننده نیست). ELF در لینوکس از ماه اوت سال 1994 وجود داشت و علنی از ماه مه یا ژوئن سال 1995 در دسترس بوده است، از مشکلات دندان در آوردن هستند احتمالا از راه در حال حاضر است. شما باید برای احتمال شکستن کارها را اجازه می دهد --- شما می توانید با هر ارتقاء عمده --- فن آوری است که شما در حال ارتقاء به دیگر خونریزی لبه. برای یک سیستم که در آن هر توسعه انجام شده است، و یا در جایی که شما می خواهید برای اجرای تالیف باینری افراد دیگر، ELF است که تقریبا یک ضرورت است این روزها. طرح به جای آن زمانی که شما به نسخه 2.0 از هسته ارتقا دهید.
هنگامی که این HOWTO برای اولین بار نوشته شده بود، تنها یک راه وجود دارد، و آن راه را در اینجا شرح داده است. این روزها توزیعهای ارتقا کیفیت بالا وجود دارد --- مگر اینکه شما، زمان قابل توجهی را سرمایه گذاری در راه اندازی ماشین شما دقیقا چگونه شما آن را دوست دارم، شما ممکن است که یک نسخه ی پشتیبان از تمام اطلاعات خود را و از کلاه قرمز اخیر نصب مجدد و یا انتشار دبیان است راحت تر از خراب در مورد کتابخانه ها و کامپایلر همه فن حریف در اینجا شرح داده است.
من باید این استرس است. کار نسبتا کوچک به خودی خود نصب در اینجا شرح داده است (می توان آن را در کمتر از یک ساعت کامل شد، به استثناء زمان صرف شده برای دانلود نرم افزار جدید)، اما بسیاری از خطاها را که شما می توانید که احتمالا شما را از نظر وجود دارد یک سیستم unbootable. اگر شما راحت با ارتقاء کتابخانه های اشتراکی، اگر دستورات و ldconfig
ldd
ldconfig
معنی چیزی برای شما، و یا اگر شما ناراضی ساخت بسته های کد منبع، شما باید گزینه آسان در نظر بگیرند. حتی اگر این شرح است که شما، در مورد آن فکر می کنم به هر حال --- اگر شما می خواهید، به طور کامل سیستم ELF، کسی است به زودی به کامپایل مجدد فایل های باینری بر روی آن.
نظرات شما عزیزان: